package com.example.coreshopapp.utils;

import android.os.Handler;
import android.os.Looper;

import java.util.HashMap;
import java.util.Map;

public class DebounceUtil {
    private static final Map<String, Runnable> debounceMap = new HashMap<>();
    private static final Handler handler = new Handler(Looper.getMainLooper());
    public static void debounce(String key, long delayMs, Runnable action) {
        if (debounceMap.containsKey(key)) {
            // 再次进来如果延迟里面的函数没有执行的话debounceMap.containsKey(key) 这个是有的
            handler.removeCallbacks(debounceMap.get(key));
        }
        // 延时结束要执行的函数
        Runnable runnable = () -> {
            action.run(); // 传递进来的数据
            debounceMap.remove(key);
        };
        // 将key区别每个不同的，将运行也一并存入
        debounceMap.put(key, runnable);
        handler.postDelayed(runnable, delayMs); // 延时器
    }
}
